<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
  <script>
    // 数据类型
    // 1. 基本数据类型
    // 存在浏览器的栈
    // 值引用
    // number, string, boolean, undefined, null, symbol, bigInt
    // let a = 0;
    // let b = 0;
    // console.log(a === b);



    // 有两种情况出现undefined
    // 定义了变量，但是没有赋值
    // let a;
    // console.log(a);
    // 输出对象里面没有出现过的属性会出现undefined
    // let obj = {
    //   name: "zhangsan",
    //   age: 20
    // }
    // console.log(obj.sex);




    // null表示空引用
    // let obj = null;




    // symbol类型es6新增的基础数据类型
    // 表示的是一个独一无二的值
    // let s1 = Symbol("abc");
    // let s2 = Symbol("abc");
    // console.log(s1 === s2);

    // 场景：在一个未知的对象里面挂载新属性
    // let obj = {
    //   a: 3,
    //   name: "lisi",
    //   age: 20,
    //   address: "xxxxx",
    //   // ....
    // }
    // const key = Symbol("sex");
    // obj[key] = "男";
    // console.log(obj);
    

    

    // bigInt类型是es10新增的，用于表示很大的数字
    // console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991  2^53-1
    // console.log(Number.MIN_SAFE_INTEGER); // -9007199254740991  -2^53+1
    // 在一些金融交易，天文计算，信息技术的字节传输可能会遇到

    // const bignum = 9007199254740991998n;
    // console.log(bignum + 1n);
    
    
    



    
    
    
    

    // 2. 复杂数据类型
    // 存在浏览器的堆
    // 地址引用
    // object(对象，数组，函数，Date，math，RegExp，Map，Set等等)
    // let obj1 = {}
    // let obj2 = {}
    // console.log(obj1 === obj2);
    
  </script>
</body>
</html>